package com.charon.auth.demo.config;

import com.charon.auth.demo.filter.TimeFilter;
import com.charon.auth.demo.intercept.TimeInterceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.*;

import java.util.ArrayList;
import java.util.List;

/**
  *@ClassName: WebConfig
  *@Description: SpringMvc配置
  *@Author: Charon [248135724@qq.com]
  *@Date: 2019/1/13 0013 0:07
  *@Version: 1.0
  */

/**
 * Springboot2.0中WebMvcConfigurerAdapter这个类已经不建议使用，推荐有两种方式：
 *      1、实现WebMvcConfigurer接口
 *      2、继承WebMvcConfigurerSupport
 *      注意：
 * 为什么是实现WebMvcConfigurer接口而不是实现这个类WebMvcConfigurerSupport
 * 如果实现WebMvcConfigurerSupport会导致自动配置失效。
 */
//@Configuration
public class WebConfig implements WebMvcConfigurer {

    @Autowired
    private TimeInterceptor timeInterceptor;

    /**
     * 与在xml中配置不同的是，这种方式可以设定过滤器在哪些时候起作用。
     * @return
     */
    /*@Bean
    public FilterRegistrationBean timeFilter(){
        FilterRegistrationBean filterRegistrationBean=new FilterRegistrationBean();
        TimeFilter timeFilter=new TimeFilter();
        filterRegistrationBean.setFilter(timeFilter);
        List<String> list=new ArrayList<String>();
        //配置在请求满足该路径的情况下，过滤器才会起作用。
        list.add("/*");
        filterRegistrationBean.setUrlPatterns(list);
        return filterRegistrationBean;
    }*/


    /* 拦截器配置 */
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(timeInterceptor);
    }



    /* 视图跳转控制器 */
    @Override
    public void addViewControllers(ViewControllerRegistry registry){

    }
    /**
     *静态资源处理
     **/
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry){

    }
    /**
     * 默认静态资源处理器
     */
    @Override
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer){

    }
    /**
     * 这里配置视图解析器
     **/
    @Override
    public void configureViewResolvers(ViewResolverRegistry registry){

    }

    /**
     * 配置内容裁决的一些选项
     */
    @Override
    public void configureContentNegotiation(ContentNegotiationConfigurer configurer){

    }

}
